From: Florian Müllner Date: Mon, 15 Aug 2022 15:40:52 +0000 (+0200) Subject: status/network: Stop using radio-mode for VPN items X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~452^2^2~26 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=6c56de82ea82e476e17010f2d5e28674ab1217be;p=gnome-shell.git status/network: Stop using radio-mode for VPN items If a device has multiple connections set up, then at most one of those can be active at a time, which is why they are presented as radio items. In contrast, VPN connections are not mutually exclusive, each can be turned on or off independently. Setting :radio-mode on them currently means that VPN connections can be activated, but never disabled. So instead of abusing the :radio-mode property to give VPN items the UI we want, use regular items that reflect the desired behavior and explicitly set up the UI the way we want. Part-of: --- diff --git a/js/ui/status/network.js b/js/ui/status/network.js index 7a191e03b..4cc9bbdd0 100644 --- a/js/ui/status/network.js +++ b/js/ui/status/network.js @@ -1249,27 +1249,22 @@ const NMVpnConnectionItem = GObject.registerClass({ super(section, connection); this._label.x_expand = true; - this.radioMode = true; + this.accessible_role = Atk.Role.CHECK_MENU_ITEM; + this._icon.hide(); this._switch = new PopupMenu.Switch(this.is_active); this.add_child(this._switch); - this.bind_property('radio-mode', - this._switch, 'visible', - GObject.BindingFlags.SYNC_CREATE); this.bind_property('is-active', this._switch, 'state', GObject.BindingFlags.SYNC_CREATE); - } - - _updateOrnament() { - this.setOrnament(PopupMenu.Ornament.NONE); + this.bind_property('name', + this._label, 'text', + GObject.BindingFlags.SYNC_CREATE); } _sync() { - super._sync(); - - if (this.radio_mode && this.is_active) + if (this.is_active) this.add_accessible_state(Atk.StateType.CHECKED); else this.remove_accessible_state(Atk.StateType.CHECKED);